package w83b.w83bOperacionesPaso.w83bCertificaciones;

import java.text.DecimalFormat;
import java.text.DecimalFormatSymbols;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.HashMap;
import java.util.List;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import org.apache.struts.action.ActionErrors;
import org.apache.struts.action.ActionForm;
import org.apache.struts.action.ActionForward;
import org.apache.struts.action.ActionMapping;

import w83b.w83bBeans.W83bCertificacionesBean;
import w83b.w83bBeans.W83bPlantillasBean;
import w83b.w83bBeans.W83bUsuarioXLNetsBean;
import w83b.w83bUtilidades.W83bUtilidadesComunes;
import w83b.w83bUtilidades.W83bUtilidadesRTF;
import w83b.w83bUtilidadesComunes.W83bClsConstantes;
import w83b.w83bUtilidadesComunes.W83bDateUtil;
import w83b.w83bUtilidadesComunes.W83bUtilidadesN38API;
import es.ejie.frmk.presentacion.operacion.paso.Q70ActionPasoOP;
import es.ejie.frmk.presentacion.sesiondatos.Q70ContextoEJIE;

// TODO: Auto-generated Javadoc
/**
 * The Class W83bTablaConveniosOP.java.
 *
 * @author Deusto Sistemas
 */
public class W83bTablaCertMasRepresentativoRtfAction extends Q70ActionPasoOP{


	
	protected void processOP(Q70ContextoEJIE contexto, ActionErrors errores, ActionMapping mapping,
			ActionForm form, HttpServletRequest request, HttpServletResponse response) throws Exception {
		
		
	}

	protected ActionForward processForward(Q70ContextoEJIE contexto, ActionErrors errors, ActionMapping mapping, 
			ActionForm form, HttpServletRequest request, HttpServletResponse response) throws Exception {

		HashMap plantillas=(HashMap)contexto.get("w83bPlantillasMap");
		W83bPlantillasBean plantilla=(W83bPlantillasBean)plantillas.get(W83bClsConstantes.CERTIFICADO_MAS_REPRESENTATIVIDAD.toUpperCase());
		HashMap mapaPar = new HashMap();
		W83bUsuarioXLNetsBean usuario = (W83bUsuarioXLNetsBean)contexto.get(W83bClsConstantes.CONSTANTE_CONTEXTO_USUARIO);
		W83bCertificacionesBean certificacion=(W83bCertificacionesBean)contexto.get("resultadoCertificacion");
		
		HashMap datosDelDep=  W83bUtilidadesComunes.obtenerTitulosDelegacionDepartamento(usuario,certificacion.getIdioma());
	    StringBuffer  tituloDelelegacionEu = (StringBuffer)datosDelDep.get("tituloDelelegacionEu");
		StringBuffer  tituloDelelegacionEs = (StringBuffer)datosDelDep.get("tituloDelelegacionEs");
		StringBuffer  tituloDelelegacionTextoEu = (StringBuffer)datosDelDep.get("tituloDelelegacionTextoEu");
		StringBuffer  tituloDelelegacionTextoEs = (StringBuffer)datosDelDep.get("tituloDelelegacionTextoEs");
		StringBuffer  tituloDepEu = (StringBuffer)datosDelDep.get("tituloDepEu");
		StringBuffer  tituloDepEs = (StringBuffer)datosDelDep.get("tituloDepEs");
		String articuloDelegacion=W83bClsConstantes.VACIO;
        if(!W83bClsConstantes.CONSTANTE_SERVICIOS_CENTRALES.equals(W83bUtilidadesN38API.elegirProvinciaDelegacion(usuario.getPerfilXLNets()))){
        	articuloDelegacion="la ";
        }
	    mapaPar.put("<<DEPCAS>>",tituloDepEs.toString());
	    mapaPar.put("<<DEPEUS>>",tituloDepEu.toString());
	    mapaPar.put("<<DELEGACION>>",tituloDelelegacionEs.toString());
	    mapaPar.put("<<DELEGACIONEUSK>>",tituloDelelegacionEu.toString());
	    mapaPar.put("<<ARTICULODELEGACIONTEXTO>>",articuloDelegacion);
	    mapaPar.put("<<DELEGACIONTEXTO>>",tituloDelelegacionTextoEs.toString());
	    if(!W83bClsConstantes.CONSTANTE_SERVICIOS_CENTRALES.equals(certificacion.getUsuarioBean().getCodTerritorioDelegacion()))
		{
	    	 mapaPar.put("<<DELEGACIONTEXTOEUSK>>",tituloDelelegacionTextoEu.toString().concat("(e)ko"));
		}else{
			mapaPar.put("<<DELEGACIONTEXTOEUSK>>",tituloDelelegacionTextoEu.toString());
		}
		mapaPar.put("<<PIE>>",usuario.getCalleListadosFormateada());
	    
		
			String[] firmante = certificacion.getFirmante().split("_");
			String auxSC=W83bClsConstantes.VACIO;
			String auxSCEusk=W83bClsConstantes.VACIO;
			if(W83bClsConstantes.CONSTANTE_SERVICIOS_CENTRALES.equals(certificacion.getUsuarioBean().getCodTerritorioDelegacion()))
					{
						auxSCEusk="LAN ";
						auxSC=" DE TRABAJO";
					}
			mapaPar.put("<<RESPONSABLE>>",firmante[0].toUpperCase());
			mapaPar.put("<<CARGO>>",certificacion.getCargodesc().toUpperCase().concat(auxSC));
			mapaPar.put("<<CARGOEUSK>>",auxSCEusk.concat(certificacion.getCargodese().toUpperCase()));
		
			mapaPar.put("<<RESPONSABLEMINUS>>",firmante[0].toUpperCase());
			mapaPar.put("<<CARGOMINUS>>",certificacion.getCargodesc().toLowerCase());
			mapaPar.put("<<CARGOEUSKMINUS>>",certificacion.getCargodese().toLowerCase());
			
			
			mapaPar.put("<<SINDIC>>",certificacion.getDescripcionSindicato());
			mapaPar.put("<<SINDIE>>",certificacion.getDescripcionSindicatoEusk());
			
			//Calculo del porcentaje
			String porcentaje="0,00";
			if (Integer.parseInt(certificacion.getDelegados())!=0){
				porcentaje=calcularporcentaje(Integer.parseInt(certificacion.getDelegadosSindicato()),Integer.parseInt(certificacion.getDelegados()));
			}
			
			mapaPar.put("<<PORCENTREPRES>>",porcentaje);
			//Fin calculo del porcentaje
			
			mapaPar.put("<<NUMREPRES>>",certificacion.getDelegadosSindicato());
			
			
			//Preparar fechaCas 
			List listaDiaEusk = W83bDateUtil.getInstance().separarDiaMesAnyo(W83bDateUtil.getInstance().getLocaleStringFromDate(W83bDateUtil.getInstance().stringToDateIdioma(certificacion.getFechaEleccionHasta(),certificacion.getIdioma()),W83bClsConstantes.CONSTANTE_CASTELLANO),W83bClsConstantes.CONSTANTE_EUSKARA);
			List listaDia = W83bDateUtil.getInstance().separarDiaMesAnyo(W83bDateUtil.getInstance().getLocaleStringFromDate(W83bDateUtil.getInstance().stringToDateIdioma(certificacion.getFechaEleccionHasta(),certificacion.getIdioma()), W83bClsConstantes.CONSTANTE_CASTELLANO),W83bClsConstantes.CONSTANTE_CASTELLANO);
			
			
			int miMesCas = Integer.parseInt((String)listaDia.get(1)) -1 ;
			int miMesEus = Integer.parseInt((String)listaDiaEusk.get(1)) -1;
			
			String mesCastellano = W83bDateUtil.getInstance().sabernombremesmin(miMesCas, W83bClsConstantes.CONSTANTE_CASTELLANO);
			String mesEuskera = W83bDateUtil.getInstance().sabernombremesmin(miMesEus, W83bClsConstantes.CONSTANTE_EUSKARA);
			
			mapaPar.put("<<FECCAS>>",listaDia.get(0)+" de " + mesCastellano + " de " + listaDia.get(2));
			mapaPar.put("<<FECEUSK>>",listaDiaEusk.get(0)+"(e)ko " + mesEuskera + "(a)ren " + listaDiaEusk.get(2) + "(e)(a)n");
			
			listaDiaEusk = W83bDateUtil.getInstance().separarDiaMesAnyo(W83bDateUtil.getInstance().getLocaleStringFromDate(W83bDateUtil.getInstance().stringToDateIdioma(certificacion.getFechaRegistroDefinitivo(),certificacion.getIdioma()),W83bClsConstantes.CONSTANTE_CASTELLANO),W83bClsConstantes.CONSTANTE_EUSKARA);
			listaDia = W83bDateUtil.getInstance().separarDiaMesAnyo(W83bDateUtil.getInstance().getLocaleStringFromDate(W83bDateUtil.getInstance().stringToDateIdioma(certificacion.getFechaRegistroDefinitivo(),certificacion.getIdioma()), W83bClsConstantes.CONSTANTE_CASTELLANO),W83bClsConstantes.CONSTANTE_CASTELLANO);
			
			miMesCas = Integer.parseInt((String)listaDia.get(1)) -1 ;
			miMesEus = Integer.parseInt((String)listaDiaEusk.get(1)) -1;
			
			mesCastellano = W83bDateUtil.getInstance().sabernombremesmin(miMesCas, W83bClsConstantes.CONSTANTE_CASTELLANO);
			mesEuskera = W83bDateUtil.getInstance().sabernombremesmin(miMesEus, W83bClsConstantes.CONSTANTE_EUSKARA);
			
			mapaPar.put("<<FECREG>>",listaDia.get(0)+" de " + mesCastellano + " de " + listaDia.get(2));
			mapaPar.put("<<FECREGEUSK>>",listaDiaEusk.get(0)+"(e)ko " + mesEuskera + "(a)ren " + listaDiaEusk.get(2) + "(e)ra");
			
						
			SimpleDateFormat sdf =new SimpleDateFormat(W83bDateUtil.ES_PATTERN);
			listaDia = W83bDateUtil.getInstance().separarDiaMesAnyo(sdf.format(new Date()),W83bClsConstantes.CONSTANTE_CASTELLANO);
			miMesCas = Integer.parseInt((String)listaDia.get(1)) -1 ;
			mesCastellano = W83bDateUtil.getInstance().sabernombremesmin(miMesCas, W83bClsConstantes.CONSTANTE_CASTELLANO);
			mapaPar.put("<<FECHOYCAS>>",listaDia.get(0)+" de " + mesCastellano + " de " + listaDia.get(2));
			
			sdf =new SimpleDateFormat(W83bDateUtil.ES_PATTERN);
			listaDiaEusk = W83bDateUtil.getInstance().separarDiaMesAnyo(sdf.format(new Date()),W83bClsConstantes.CONSTANTE_EUSKARA);
			miMesEus = Integer.parseInt((String)listaDiaEusk.get(1)) -1;
			mesEuskera = W83bDateUtil.getInstance().sabernombremesmin(miMesEus, W83bClsConstantes.CONSTANTE_EUSKARA);
			mapaPar.put("<<FECHOYEUSK>>",listaDiaEusk.get(0)+"(e)ko " + mesEuskera + "(a)ren " + listaDiaEusk.get(2)+"(e)(a)n");
			
			mapaPar.put("<<LOCALID>>",certificacion.getDescLocalidadCast());
			
			
		
			StringBuffer buffer = W83bUtilidadesRTF.sustituirCadenaCaracteresRtf(plantilla.getFichero(), mapaPar);
			
	
    response.setContentType("application/msword");
    response.setContentLength(buffer.toString().getBytes().length);
    response.setHeader("Content-disposition","attachment;filename="+plantilla.getNombrePlantilla());
    response.getOutputStream().write(buffer.toString().getBytes());
    response.getOutputStream().flush();
	
    return null;
	}
	
	private String calcularporcentaje(int totalparc,int total){
		DecimalFormatSymbols simbolos = new DecimalFormatSymbols();
		simbolos.setDecimalSeparator(',');
		DecimalFormat formateador = new DecimalFormat("####.##",simbolos);
		if (total==0){
			return "0";
		}
		else{
			float n=((float)totalparc*100)/(float)total;
			return formateador.format(n);
		}
	}
	
	
	
}

